using com.ljsd.jieling.protocols;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class FriendManager : MonoBehaviour
{
    public static FriendManager Instance;

    [SerializeField]
    private List<Friend> friendList = new List<Friend>();

    public List<Friend> FriendList => friendList;

    private void Awake()
    {
        if (Instance == null)
        {
            Instance = this;
            DontDestroyOnLoad(gameObject);
        }
        else
        {
            Destroy(gameObject);
        }
    }

    public void InitFriendList(GetFriendInfoResponse data)
    {
        Debug.Log("开始初始化好友数据...");
        if(data == null)
        {
            Debug.LogWarning("接收到的好友数据为空");
            return;
        }
        
        if(data.Friends == null)
        {
            Debug.LogWarning("接收到的好友列表为空");
            friendList.Clear();
            return;
        }
        
        friendList.Clear();
        friendList.AddRange(data.Friends);
        Debug.Log($"初始化好友数据成功，共 {friendList.Count} 个好友");
        
        // 显示好友列表中的第一个好友信息作为示例
        if(friendList.Count > 0)
        {
            var firstFriend = friendList[0];
            Debug.Log($"示例好友信息：ID={firstFriend.id}, 名称={firstFriend.name}, 等级={firstFriend.lv}");
        }
    }
    public void RequestFriendList()
    {
        Debug.Log("开始请求好友列表...");
        if(NetworkManager.Instance == null || NetworkManager.Instance.GetSocket(SocketType.LOGIN) == null)
        {
            Debug.LogWarning("网络未连接，无法请求好友列表");
            return;
        }
        
        NetManager.GetAllFriendData(() => {
            Debug.Log("好友列表请求完成，正在处理数据...");
            // 请求完成后自动打印好友列表
            PrintAllFriends();
        });

    }
    
    // 打印所有好友信息到控制台
    public void PrintAllFriends()
    {
        if (friendList.Count == 0)
        {
            Debug.Log("好友列表为空");
            return;
        }
        
        Debug.Log("好友列表信息：");
        foreach (var friend in friendList)
        {
            Debug.Log($"好友ID: {friend.id}, 名称: {friend.name}, 等级: {friend.lv}, 在线状态: {(friend.offLineTime == 0 ? "在线" : "离线")}");
        }
    }


    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}
